package com.itheima.controller;

import com.itheima.anno.LogOperation;
import com.itheima.pojo.Clazz;
import com.itheima.pojo.Result;
import com.itheima.service.ClazzService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.util.List;

@RestController
@RequestMapping("/clazzs")////请求映射  可以定义在类上，也可以定义在方法上 可以接收任意类型的请求. 如果定义在类上，这个路径就是当前类中所有方法路径的前缀
public class ClazzController {
    @Autowired
    private ClazzService clazzService;

    @GetMapping//请求映射 跟@ReuqestMapping类似，区别在于请求方式不同， @GetMapping只能接收GET请求
    public Result page(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer pageSize, String name, @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin, @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
        // 修改为调用 clazzService 的 page 方法
        com.itheima.controller.PageResult pageResult = clazzService.page(page, pageSize, name, begin, end);
        return Result.success(pageResult);
    }

    @LogOperation
    //删除班级
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) {//@PathVariable从 URL 路径中提取变量
        clazzService.deleteById(id);
        return Result.success();
    }

    @LogOperation
    //添加班级
    @PostMapping
    public Result save(@RequestBody Clazz clazz) {
        clazzService.save(clazz);
        return Result.success();
    }

    //根据id回显班级信息
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id) {
        Clazz clazz = clazzService.getById(id);
        return Result.success(clazz);
    }

    //修改班级信息
    @LogOperation
    @PutMapping
    public Result update(@RequestBody Clazz clazz) {
        clazzService.update(clazz);
        return Result.success();
    }

    //查询所有班级信息
    @GetMapping("/list")
    public Result list() {
        List<Clazz> clazzList = clazzService.list();
        return Result.success(clazzList);
    }
}